package cn.neusoft.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 拦截器：
 *   SpringMVC中才有的  不同于过滤器
 *   实现接口 HandlerInterceptor
 *   实现方法：
 *      preHandle
 *         进入业务方法之前
 *          判断 放行就返回true  不放行返回false
 *      postHandle
 *      afterCompletion
 *
 *   拦截器需要配置
 *    SpringMVC项目中 可以在springmvc.xml中配置
 *    SpringBoot项目中  没有springmvc.xml配置文件  写配置类
 */
public class MyInterceptor implements HandlerInterceptor {

    //preHandle()方法在业务处理器处理请求之前被调用
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        System.out.println("进入拦截器了....");
        //这里可以判断用户是否登录
        //没有登录可以使用 request/response跳转回登录页面

        //注：如果不继续执行返回false,否则返回true
        return true;
    }

    // postHandle()方法在业务处理器处理请求之后被调用
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {
    }

    // afterCompletion()方法在DispatcherServlet完全处理完请求后被调用
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
    }
}
